import store from '@/store/index.js'

// 此vm参数为页面的实例，可以通过它引用vuex中的变量
module.exports = (vm) => {
	// 初始化请求配置
	uni.$u.http.setConfig((config) => {
		config.baseURL = store.state.apiUrl; /* 根域名 */
		// 配置请求头信息
		config.header = {
			'content-type': 'application/json;charset=UTF-8',
			'Access-Control-Allow-Private-Network': true
		};
		return config
	})

	// 请求拦截
	uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
		// uni.showLoading({
		// 	title: '加载中...'
		// })
		config.data = config.data || {}
		const token = 'Bearer ' + uni.getStorageSync('userToken');
		config.header['Authorization'] = token || '';
		return config
	}, config => { // 可使用async await 做异步操作
		return Promise.reject(config)
	})

	// 响应拦截
	uni.$u.http.interceptors.response.use((response) => {
		/* 对响应成功做点什么 可使用async await 做异步操作*/
		uni.hideLoading()
		const data = response.data
		if (data.code === 200) {
			return data;
		} else if ([-401, -99].includes(data.code)) {
			uni.$u.toast("token过期或失效")
			setTimeout(() => {
				// 关闭所有页面跳转登录页
				uni.$u.route({
					type: 'navigateTo',
					url: '/pages/login/login'
				})
			}, 1000)
			return false
		} else {
			uni.$u.toast(data.message)
			return
		}
	}, (error) => {
		console.log(error)
		// 对响应错误做点什么 （codeCode !== 200）
		uni.hideLoading()
		return uni.$u.toast('请求错误！');
	})
}
